#pragma once
#ifndef CMDTASK_H_
#define CMDTASK_H_
#include "dirStack.h"

typedef enum {
    CMD_TYPE_INIT = -1,
	CMD_TYPE_CD = 1,
	CMD_TYPE_LS,
	CMD_TYPE_PWD,
	CMD_TYPE_MKDIR,
	CMD_TYPE_RMDIR,
	CMD_TYPE_REMOVE,
	CMD_TYPE_PUTS,
	CMD_TYPE_GETS
} CmdType;

typedef struct user_s{
    _dirStack_t _dirStack;
    int _clientFd;// 绑定客户端端口和当前线程的端口
}user_t;

typedef struct task_s
{
	int _clientFd;//对端fd
    CmdType  _cmdType;//命令类型
    char _data[1024];//存储命令
    struct task_s *_pNext;
    user_t* _user;
} task_t;

void user_init(user_t* usr);

void _task_init(task_t* task);

void doTask(task_t * ptask, _dirStack_t* dirStack);

//任务接口
void cmdCd(task_t * ptask, _dirStack_t* dirStack);
void cmdLs(task_t * ptask, _dirStack_t* dirStack);
void cmdPwd(task_t * ptask, _dirStack_t* dirStack);

void cmdMkdir(task_t * ptask, _dirStack_t* dirStack);
void cmdRmdir(task_t * ptask, _dirStack_t* dirStack);

void cmdPuts(task_t * ptask, _dirStack_t* dirStack);
void cmdGets(task_t * ptask, _dirStack_t* dirStack);
void cmdRm(task_t * ptask, _dirStack_t* dirStack);

#endif

